SolverStudio 
http://www.solverstudio.org
(c) 2011, 2012, 2013, 2014, 2015, 2016 Andrew Mason

Many thanks to the Dept of Engineering Science, University of Auckland, for supporting our students Kris, Oscar, & Mirendra who made huge contributions to SolverStudio.

Known Issues:
  The output display window does not place any output generated by an external solver such as CBC in the correct position, but appends this to the other (often later) output text. 
  Running PuLP externally does not support default values for Data Items.
  Dragging a sheet (from one workbook to another, or within the same workbook) will not move/copy the model; it needs to be copy/pasted into the new sheet
  In our testing on Windows 7 64 bit with Office 2010 32 bit with an "all users" installation when logged on without administrator access, double clicking a spreadsheet to open Excel means SolverStudio does not load. Opening Excel and then opening the spreadsheet seems to work ok.
  In Windows 7, running a model when Excel has multiple workbooks open, and then using the SolverStudio Minimise button, hides Excel in a way that it cannot be opened again using the Task Bar. Instead, the user can use Alt-Tab to go back to their running model. This is a known VSTO issue.
  Opening multiple views of the same spreadsheet is poorly handled in Excel 2013 (and later).
  Under Excel 2013 & later, the model window may not always be correctly shown/hidden; toggling the Show Model button should fix this. 
  Having two windows open for the same s/sheet under Excel 2013 can confuse SolverStudio's model window handling; please avoid doing this.

SolverStudio 0.09.02 (2016.04.08)
This updates the Julia handling to work with Julia 4 and associated JuMP changes. We also update the Julia examples, and add "Advanced Data Item Usage.xlsx"

SolverStudio 0.09.01 20150813d – minor update
SolverStudio_00_09_01_00 20150813d.zip
This contains an IronPython patch to work around an IronPython 2.7.4 and 2.7.5 bug. This bug causes the error “SystemError: Handle is not initialized” in “_weakrefset.py”, line 73, within __contains__().
For more information, see https://mail.python.org/pipermail/ironpython-users/2015-April/017448.html and https://github.com/IronLanguages/main/issues/1187
Many thanks to SolverStudio user Andres Sommerhoff for following this up and suggesting this patch.
If you have not encountered this error, then there is no advantage in upgrading.

SolverStudio 0.09.01 (20150813) now with MOSEK examples
SolverStudio_00_09_01_00 20150813c.zip 
This is still the same underlying SolverStudio 09.01 release, but the download now includes a new example spreadsheet showing how the MOSEK solver can be used from SolverStudio. More information is available on the MOSEK language page.
Many thanks to Andrea Cassioli from MOSEK for working with us to explore how best to integrate MOSEK with SolverStudio, and creating the new examples and information page.


Changes 0.09.01 (2015.08.13)
1/ Added a VBA Examples.xlsm that show how to click SolverStudio's "Solve Model" button in VBA
2/ Rationalised the Examples s/sheets
3/ Major GAMS change to newer version of GAMS DLL's. This fixes problems on 64 bit windows. Various bugs were also fixed in importing and viewing GDX files. (Thanks to Eduardo for reporting the issue with a detailed analysis.)
4/ Fixed an AMPL bug in dat file import
5/ Updated PuLP to 1.6.0
6/ Added DisableVSTOErrorAlerts.bat and EnableVSTOErrorAlerts.bat to AdvancedInstallers

Changes 20150730 (00.08.02)
1/ Uninstaller.exe is now signed & renamed with the more common name "Uninstall.exe". (It is now version 1.1, just to indicate the signing.)
2/ Minor code fixes were made based on the Code Analysis made by Visual Studio 2013.
3/ The pre-requisites were changed to exclude .Net Framework 3.5 (not required for some time) & MS Office 2007 Primary Interop Assemblies, remove Windows Installer 3.1, and add Windows Installer 4.5. The resulting code should (which now requires Microsoft .Net Framework 4 (x86 & x64), MS Visual Studio 2010 Tools for Office Runtime (x86 & x64) and Windows Installer 4.5) will still support Office 2007 and later: see https://msdn.microsoft.com/en-us/library/vstudio/bb772080%28v=vs.120%29.aspx The pre-requisites now match a clean VSOT project targetting Office 2010.
4/ Improved Julia handling (via RunJulia.py) to properly quote strings, handle booleans correctly, and add constants giv9ing the workbook and sheet info.
5/ Bug fixes for CMPL/pyCMPL (thanks, Mike)
  
Changes 20150615 (00.08.01)
1/ Add a Settings menu & Dialog for choosing the external EXE's used for each modelling language. This updates the SolverStudio environment variables.
2/ Updated all .py runner files to report any .exe error codes (except Pyomo, which gives errors in old Pyomo versions, and so this change has not been applied for Pyomo)
3/ Updated Julia support code to list data items at the top of the SolverStudio.jl file 
3/ Reduced tab width in the SolverStudio text file viewer window to 3, making the SolverStudio.jl much more readible.
4/ Improved our running of external applications like ampl.exe and julia.exe to better capture all the output; thanks to http://csharptest.net/532/using-processstart-to-capture-console-output/ for really good code (better than Microsoft's examples).
5/ Improved our handling of cases of workbooks being opened while other workbooks are still active (and have not been de-activated by Excel). In this case, dropping an already open workbook onto Excel causes a new workbook event but no preceding deactivate.
6/ Thanks to Andres, fixed a bug where a workbook stored on a mapped network drive (eg //server/testfil.xls mapped to h:/testfil.xls) would not give COM support when run under CPython because the COM and SolverStudio used different names for the same workbook (being //server/testfil.xls and h:/testfil.xls respectively)=
7/ Added code to support using a .exe as a console that you can pass commands to, as used for Julia support
8/ Changed Julia to allow running using Julia as a console
9/ Added support for sending commands to the Julia console
10/ Added pyCMPL (thanks Mike Steglich) as a new language, along with examples
11/ Fixed a race condition that could cause Excel to hang if the model generated an error as soon as it ran (see 20150527 in code)
12/ Added a (partial) work around to AMPL over-writing output files when referring to "> Sheet" and "> sheet" (in a different upper/lower case mix) in the same file. AMPL sees  "sheet" as different from "Sheet" and hence erases all existing content in the output file in the second write. We handle all cases where the user uses "display" (but not _display)
13/ Modified AMPL handler to work with blank output in display, which results in AMPL output such as "nbr; #empty" in the Sheet file if "nbr" has no value.
14/ Updated to IronPython 2.7.5
15/ Added the new NESO CPLEX solver to default solver lists for GAMS and NEOS (and removed filtering out of Gurobi)
16/ Added a SolverStudio menu to replace About, that contains Examples, SolverStudio Settings and the About menu.
17/ Fixed a bug stopping GAMS NEOS from changing solvers.
18/ Fixed several CMPL bugs (thanks, Mike).
19/ Added support for saving and then sending an email address to NEOS (as needed by CPLEX and other? solvers)
19/ Improved handling of GAMS NEOS solver errors caused by not having an email address.
20/ Changed NEOS Warning dialog (AMPL and GAMS) to report any email address being sent.
21/ Added @compat and Compat module to Julia to support both Julia v0.4 and Julia 0.3.X. All code has been tested on Julia 0.3.9
22/ Updated to CBC 2.9.4 and IPOPT 3.12.1 (Thanks Victor from AMPL for the binaries)
23/ A bug fix in CMPL for Iron Python 2.7.5 fussiness.

Changes 0.6.14 20150310
1/ Added the DataItems, DictionaryDataItems, ListDataItems, and SingletonDataItems found under IronPython to the CPython environment; check the runtime-created SolverStudio.py file to see these
2/ Added more user information to the About box.
3/ Fixed a bug where cancelling the closing of an spreadsheet that contained a model would result in SolverStudio creating two WorkBookMgrs to try to manage the same workbook
4/ Made the tracking of workbooks more robust so that even if several WorkBookMgrs do end up trying to manage the same workbook, one of them will be deactivated. This code will, hopefully, not be needed thanks to fix 1 just above.
5/ Fixed bugs in CMPL support Python files (thanks, Mike).
6/ Added beta support for Julia+JuMP; Thanks to Mirendra from Eng Science for the integration work on this.
  
Changes 0.06.13 (2015.02.27)
1/ Improved the double clicking on an error line so that the anchor goes to the start of the line, so the text is not scrolled to the end of the line.
2/ Improved CMPL error reporting so it shows line numbers.
3/ Fixed a CPython bug with incorrect indentation in the SolverStudio.py module file
4/ Added a Python examples file with IronPython and CPython examples
5/ Improved the Advanced Installers batch files to remove hard coded SolverStudio version info.

SolverStudioTools.xlam 0.62 2015.01.27
1/ Updated SolverStudioTools.xlam to ignore defined names such as Print_Area etc  
2/ Updated SolverStudioTools to use long, not ints, to help avoid overflows on big data ranges
3/ Fixed bug in SolverStudioTools.xlam in DrawColTuple(myDataRange As Range) to avoid overflows
4/ Improved range highlighting in SolverStudioTools.xlam to handle full-width (ie all-column) ranges
5/ Replaced any "OpenSolver Error" text with "SolverStudio Error"

Changes 20150127 
1/ Updated SolverStudio to ignore defined names such as Print_Area etc  
3/ Added "symbolic" to the AMPL keyword list 
4/ Added a Test NEOS Connection item to the GAMS+NEOS and AMPL+NEOS languages
5/ Add a "Save Workbook" menu item so Ctrl-S works in the editor
6/ Changed handling of languages to allow some languages to not be available; Language menu only appears if more than 1 language is available, or the current language of some loaded model differs from the single language available.
7/ We now free "_pythonRunInfo" after each Python run so we don't hold onto old variables (which may have been causing the memory leak reported by Eldemar).
8/ Updated AMPL handler to allow strings to be read in (as well as floats), such as are generated by "display solve_result > Sheet;"
9/ Updated to latest ipopt (v3.12.0) and cbc (v2.9 Jan 28 20145)
10/ We now correctly trap any writes to SolverStudio data items that are a Python List.
11/ New feature: Double clicking an output line that contains "line 44" or "row 44" will go to line 44 in the editor; this makes finding errors much easier.
12/ Fixed an issue in all languages with our Python code having names that clashed with those defined by the user, leading to a COM Exception in code such as "for (value,name) in" if the user defined a "value" data item



Changes 20141104 0.06.11 (2014.11.04)
1/ Minor change in RunCPython.py to allow the external CPython to be version 3
2/ Fix bug - now correctly handles NEOS timeouts on long solve runs
3/ In AMPL and GAMS, Convert "]]>" into "]] >" before creating XML files for NEOS as "]]>" is a CDATA terminating delimeter

Changes 20141009
1/ Added new CMPL language; thanks for Mike Steglich for all the work on this integration
2/ Fixed Pyomo support bug where SolverStudio would claim Pyomo had not written an answer if running on a Python installation with YAML available
3/ Fixed a bug in the AMPL reporting code that was preventing user errors being reported correctly.

Changes 20140829, version 00.06.03.00
1/ Change processing of data items so that reserved names such as Print_Area are not treated as defining data items.
2/ Update to GLPK 4.55

Changes 20140730:
1/ Changed GAMS calling by adding LO=3 to redirect output to STDOUT (not the console) so that SolverStudio can show it; Thanks to the GAMS team in Germany for this tip
2/ Changed the search for GAMS to now look up the Registry setting [HKEY_CURRENT_USER, "gams.location"] and [HKEY_CLASSES_ROOT, "gams.location"), as suggested by GAMS (thanks, guys).
3/ fixed the search for .exe files to now correctly search in "Program Files" when running on a 64 bit OS in a 32 bit process (when finding the name of this folder is not supported by Windows calls) 
4/ The environment variables can now specify any file (.exe/.bat etc), or just a path to the expected exe. Examples are:
  - "SolverStudio_AMPL_PATH=c:\temp", giving "c:\temp\ampl.exe"
  - "SolverStudio_AMPL_PATHc:\temp\" giving the same, 
  - "SolverStudio_AMPL_PATH=c:\temp\MySpecialAmpl.exe", giving the specified .exe file
5/ About Box now shows GAMS version, and also gives a clearer report on the environment variable settings in force

Changes 20140609  
1/ Changed the search for AMPL, Gams and Gurobi to a more aggressive search using wildcards in programs files and c:
2/ Changed about box to report setting of SolverStudio environment variables
3/ Resolved :g15 formatting issues in outputting of files for NEOS, GMPL, COOPR in locales where a comma replaces a decimal point (thanks to Ilya's bug report)

Changes 20140606 0.06.02 (2014.06.06)
1/ Removed writing of a debugging file into c:\temp\t in RunGAMS.py
2/ Fixed bad reference to an Python module in the import; this caused problems on some machines in the AMPL NEOS code with the error message "Could not add reference to assembly system.IO"
  
Changes 20140407 (SolverStudio_00_05_47_00; Package Version 0.06.00 (2014.04.07))
1/ Changed the setup requirements (Prerequisites) to be .Net 4.0 full, not client, to support the new Scintilla editor.
2/ Updated IronPython to version 2.7.4 (released Sept 7 2013 - see  http://ironpython.codeplex.com/releases/view/90087)
3/ Fixed the uninstaller file  "Delete_HKCU_OS64_Office32.reg" by deleting Wow6432Node - Wow6432Node is not used for HKCU, only HKLM
4/ Moved the Gurobi DLL's into "SupportFiles", with new support in SolverStudio for adding either SuportFiles/32bit or SupportFiles/64bit to the path as appropriate for bitness of the .Net environment
5/ After much anguish, added working AMPL license mgr support. If the ampl.exe file being run has an ampl_lic.exe file in the same directory, we run this if an ampl_lic.exe process is not already running. This avoids the apparent bug where AMPL hangs on the first run because it is trying to open the license mgr; see http://www.gurobi.com/documentation/5.0/ampl-gurobi-guide/ampl_lic
6/ Extended CPython support to now allow SolverStudio.Application, SolverStudio.ActiveBook and SolverStudio.ActiveWorksheet to work outside IronPython. This requires win32com and pythoncom to be installed in Python (as occurs with ActivePython installs, but not necessarily with other versions of Python)
7/ Updated to ScintillaNEt v2.6.0.0 (released 18 Feb 2014), and changed SolverStudio to use the Scintilla DLL's provided with in SolverStudio/SupportFiles (rather than any other such files on a user's PC) by adding this folder to the start of SolverStudio's PATH variable.
8/ Multiple small language fixes, including code changes to work with new file locations used in NEOS. Many thanks to Kris Atkins, Engineering Science student, for his work on this. 
9/ Changed PATH management to allow PuLP to find the SolverStudio solvers, meaning that PuLP now has its own CBC solver deleted in this release.
10/ Changed Pyomo run file to decode Pyomo output files from latest version (whcih seems to have a bug to do with quoting of indices with commas in their name).
11/ Updated Gurobi licence mgr error reporting
12/ Updated Data Item editor so it shows the current selection ready to have a name added to create a data item.
13/ Added support for an AMPL shell which opens in the temporary SolverStudio folder ready to load "model.mod" (being exactly the model entered into SolverStudio) and "sheetdata.dat"
14/ Added a 60 second timoeut for AMPL NEOS
15/ Updated to latest PuLP and GMPL versions

SolverStudio Tools Data Items Editor 0.55 Beta 2013.10.17
1/ Prevented names with a trailing . because we internally add a dot to the names of any defined data items that Excel cannot create (such as "R" which clashes with R1C1 notation)
2/ After editting the name of an item, we select the renamed item wherever it now appears in the list
  
Package Version 0.05.56 (2013.09.30)
Fixed a bug where you could not edit date before showing the model, added AMPL sets of sets, and fixed AMPL issue for models with "option solver" and "display" (but no "solve")..

Package Version 0.05.55 (2013.07.03)
1/ SolverStudio was preventing worksheets being editted if embedded inside Word (and other applications) because of incompatibilities between OLE embedding and .Net. SolverStudio now includes work arounds to avoid this issue. 
  
Package version 0.05.50 (2013.07.01)
1/ Made further workarounds for COOPR bug by outputting integers whenever possible (as we do for AMPL). Cases with decimal values as set members still cause COOPR trouble
2/ Refactored and changed code to handle Excel 2013 which has a separate window for each workbook (meaning there are multiple task panes showing simultaneously).
3/ Changed NEOS languages to show the NEOS warning when the model is first solved, not during language initialisation.
4/ Added a SolverStudio.SessionSettings dictionary that languages can use to store settings that persist between solves (but not across application exits)
5/ Added ScintillaNET editor, which required changing from .Net 4.0 Client Edition to the full .Net 4 This may require running setup.exe to install the full .Net 4 package during a SolverStudio install as some machines may only have the smaller Client version. (Note that when we upgrade to .Net 4.5, this issue will disappear as there is no client version.) This editor has full keyword colouring for the models.
6/ Upgraded installers to copy the ScintillaNET.dll when doing a Quick Install. The unmanaged Scintilla DLLs (32bit and 64 bit) are in a Scintilla support folder.
After 2/7/2013:
7/ Changed AMPL to default to CBC, and also changed the AMPL examples to use cbc and not cplex, because the cplex solver is not included (and the Gurobi solver is crashing!)

Package version 0.05.41 (2013.06.26)
1/ Fixed COOPR bug when outputting integers; they ended up quoted
2/ Changed package version string to include leading 0's
  
  
Package version 0.5.4 (2013.06.25), 
1/ Added beta support for all-user installations on 32 and 64 bit Windows
2/ Added support for suffixes in AMPL (and AMPL on NEOS), so naming a data item rhs.dual will allow an AMPL statement like "display rhs.dual > Sheet;" to show the dual variable values on the sheet. (Previously, dots in data item names were banned.) Thanks to Ted Ralphs for requesting this.
3/ Added an AMPL menu to allow the user to choose the SolverStudio AMPL installation, meaning solvers and AMPL.exe are used from the downloaded student version of AMPL. If this is not chosen, any AMPL and any solvers found on the machine will be used (which will typically use up licenses from a license server.)
4/ Added a work around for Pyomo to write data as AMPL tables, not lists, thereby by-passing a Pyomo limitation. (This limitation is being fixed by the Pyomo team. Thanks go to Ted Ralphs for pointing this out.)
5/ Added a new File menu item to view the SolverStudio XML data added to the spreadsheet; this is most useful for debugging.
6/ Fixed a bug where hidden rows/columns caused a crash when displaying data items
7/ Changed the code to update the internal data within the spreadsheet (including the model text and settings) on each change if it has not been updated in the last 30s. This means model changes will be saved as part of Excel's Auto Save functionality, with less being lost if Excel crashes. (Previously, the internal spreadsheet structures were only updated before a user save.) Thanks, Ted Ralphs, for pointing this out.
8/ Updated to PuLP 1.5.4 (with a minor tweak by AJM)
9/ Updated to GMPL GLPK 4.51
10/ Added a new SolverStudio.UpdateDataItemsOnSheet() method that Python models can use to push changes in data items back onto the sheet during the running of a Python model.
11/ Fixed the data items display to work with hidden rows and columns
12/ Update examples to include an AMPL suffix example
13/ Improved the centering of the install AMPL dialog
14/ Added a File ... View Examples menu
15/ Changed error reporting dialogs to put main error at top of dialog
  
SolverStudio Package 0.5.2 (2013.06.03) (prvivte release)
2/ Updated the AMPL, GMPL and AMPL on NEOS Python code to all close the 'sheet' file after processing it; it was previously being left open
3/ Changed SolverStudio C# code to version SolverStudio_00_05_20 (2013.06.03) to:
3A/ Fix a serious bug where enabling VBA code in a sheet resulted in the model/sheet connection being broken, causing random models to show up as the active sheet was changed. This only happened when the user "enabled" the VBA code after first loading the sheet, which caused Excel to apparently open a new workbook (while actually re-opening the old one, and hence confusing SolverStudio).
3B/ Create (and then delete) temp working directories with randomised names, thsu allowing multiple SolverStudio's to run at the same time on the same PC. Code is also more efficient now in that it remembers the folder name once it has been created
3B/ Support "all users" installations by reading registry keys from HK_Local_Machine as well as HK_Current_User
3C/ Added in more debug output as part of fixing 3A
4/ Updated colours in Data Items editor dialog (now version 0.52 beta) to be more standard (and look better on newer Windows)
5/ Added work-around to COOPR/Pyomo code to handle Pyomo's errors reading is data files containing simple indexed lists (thanks to Ted Ralphs' error report)
6/ CHanged AMPL and AMPLonNEOS to output numeric data items using "g" format, meaning integer values end up as integers (eg 5, and not 5.0) within AMPL sets and indices
7/ Changed Pyomo Solver list to be anything found in Solvers folder, plus a bunch of standard solvers (which are not checked for being installed)
8/ Solver check for existance in AMPL is currently disabled
9/ Upgraded to a new CBC with AMPL support (thanks Victor from AMPL). 
10/ Added support for data items with suffixes, eg var.rc, as need in AMPL (and AMPL on NEOS) to get duals, reduced costs etc. This ishandled via "escaping" of data item names. Itis not yet implemented out AMPL and AMPLonNEOS
11/ Improved the uninstall code in About SolverStudio to uninstall both current and all-users, and forcibly remove registry entries if the current-user uninstall fails.
12/ Added a new Use SolverStudio's AMPL Student Version menu which will use the AMPL+Solvers installed using the Install AMPL Student Version, even if there is another AMPL+solvers installed.
13/ Fixed a bug in the modified COOPR code where quotes were missing around strings with spaces in them


SolverStudio_00_05_01_00 (2013.03.27) (private release)
1/ Changed the Data Items editor to fix problems where some data items were not being correctly displayed after edits
2/ Fixed a problem runnig Gurobi when SolverStudio was installed in a directory containing spaces
3/ Introduced a 'package version' as distinct to the C# code version which is now reported in the About SolverStudio.
4/ Centered the Gurobi licesing output dialog
	  
SolverStudio_00_05_00_00 (2013.02.19)
A major update following a summer research project by Oscar Dowson (Year 2, Engineering Science, University of Auckland).
1/ Added COOPR support + examples
2/ Added SimPy support + examples
3/ Changed Gurobi support to use Gurobi's Python environment, meaning a full Python install is not needed. Added Gurobi License Manager + examples
4/ Added GAMS on NEOS support + examples
5/ Added integrated GAMS GDX file support via C# API
6/ Changed GAMS to use GDX files
7/ Changed the GAMS data command to $GDXIN "SheetData.gdx" in models
8/ Changed the GAMS display command
9/ Changed wording of help text in the Ribbon Menu (previously said 'Python PuLP' regardless of language
10/ Added a Fix Minor Errors command to AMPL. This will correct choice of Solver, and missing data, solve and display commands.
11/ Added compression for large files being sent to NEOS
12/ Added menu items to select choice of solver on NEOS; this is written to the model in AMPL as an AMPL 'option', and stored (invisibily) with GAMS. 
13/ Split examples into different workbooks
14/ Removed CPython from SolverStudio download. Now requires user to install manually if needed
15/ Added lines to data items in Highlight Data Items and Data Items Editor to show direction of tuples
16/ Added the ability to resize the Data Items Editor
17/ Added local precedence to the Data Items Editor. Creating an items with the same name as a global hides the global. Deleting the local shows the global.
18/ Added code to parse complex AMPL output; option_display_1col99999999 no longer needed
19/ Added option to choose NEOS queue (long/short).
20/ Fixed bug where sheets with single quotes ' in their name failed to find Data Items or solve
21/ Updated About Box
22/ Removed need to for ugly AMPL display options command
23/ The code is now signed using a Comodo certificate
24/ Registry settings now store (and remember) the model-window's font size
25/ Added support for storing 'settings' such as the choice of solver in the spreadsheet along with the model
26/ Improved handling of data items to allow sets to have missing items (which are skipped) and to contain 'uneven' tuples (ie tuples with different lengths in the same set). Indexed sets can also contain values (but not indices) that can be uneven tuples. Any set used for indexing needs to have tuples of all the same length (being the number of rows or columns used to define the index). Indexed sets of tuples (even and uneven) can now be written to.

	 
SolverStudio_00_04_09_26 (2012.10.15)
1/ Fixed a long standing problem with the editor slowing down with large files (by adding fast "unsafe" code :-( )
2/ Fixed an AMPL on NEOS bug where uninxed variables were not written back to the sheet; thanks Suresh.
3/ Minor wording change in an error msg, and output of blank lines in AMPL on NEOS queue reporting
	 
SolverStudio_00_04_08_24 (2012.10.05)
1/ Removed much of the "pause" after solving the model (caused by some quirk in multi threading we still need to understand)
2/ Added support for NEOS, allowing AMPL models to be solved 'in the cloud'
3/ Added a NEOS example in "SolverStudio More AMPL Examples vA", and removed double "check" statements in this file
	 
SolverStudio_00_04_06_22 (2012.09.07)
1/ Added links to the online AMPL book for both AMPL and GMPL
2/ Added a menu item to display the data file under both AMPL and GMPL (along with C# code to support updating this file display in real time)
3/ Added menu items to print the model file and the model output.
	 
SolverStudio_00_04_04_20 (2012.08.27)
1/ Fixed a bug that was deleting the model if a sheet was renamed (and nothing was changed in the model text), and the workbook then saved.
  
SolverStudio_00_04_03_19 (2012.08.24)
1/ Changed PuLP running code to first switch to the temporary working directory, which (we hope) means PuLP stores it temporary files in this directory (not the workbooks's directory)
2/ Added code to remove models that belong to deleted sheets when saving the workbook
3/ Added support for default values in AMPL and GMPL; these are set using the DataItems editor under "Value if missing"
4/ Changed AMPL processing file to work with sets that contain just one item; these are found by parsing the AMPL code (as was done for GMPL)
5/ Improved error checking in AMPL and GMPL results processing
6/ Disabled sheet recalculation during loading back of results (thanks, Stu!); this should be faster
7/ Switched to a single file handling both AMPL and GMPL (stored as two .py files, with a language switch); added file version reporting as a menu item (see version.py)
8/ Added AMPL & GMPL commands to open and view the last data file, and to access more GMPL online resources
9/ Updated and improved the SolverStudioExamples workbook

SolverStudio 0.04.02.19 (2012.07.26)
1/ Fixed AMPL and GMPL Python handler to work correctly with indices that contain spaces. Also provided more detailed reporting from GMPL and AMPL of the data items that were updated or are up-to-date.

SolverStudio 0.04.02.19 (2012.07.11)
1/ SolverStudioTools.xlam [0.4 beta (2012.07.04)] 
Changes to avoid 32,000 limit arising from Integers. Version increased from 0.3.
2/ SolverStudio [0.04.02.19]
Error reporting for out-of-index errors within data items now report the line number in the model where the line occurred. (Thanks for the suggestion, Stu, Oliver and Matthew.)
3/ Fixed AMPL Python handler to work correctly with more complex indexing 

SolverStudio_00_04_01_30 2012.02.20
  Added a Cancel button that aborts any running Python script, and terminates all executables started by this script (and thus running with Excel as a parent).
  Changed writing of values to single cells to only set their value if it differs from the current
  value. This prevents named cells containing formulae from being overwritten when running with CPython which (used to) update all the variables.
  Changed the RunCPython.py file to only write single cell values if they have changed, and to report as changed only those items that actually have new values.
  The Output window and the model editor both now accept UTF8 encoded strings, allowing non-English characters to be handled.
  Added an uninstall button that runs the user's VSTO Installer .exe.

SolverStudio_00_04_01_22 20120210
  Fixed writing of Custom XML part (which contains the model code) to use UTF8 encoding (thanks, Oleg, for the bug report)
  

SolverStudio_00_04_01_17 2012-01-23
  Changed PuLP to be much faster on large models running under IronPython. (Many thanks to Stu Mitchell for working with me to get PuLP running efficiently under IronPython.)
  Minor change to SolverStudio About box to show the VSTO-published version info when possible
  Added this History file
  
